<!-- 
  封装一个名为 “task-list” 的任务列表组件，
  要求使用 ul 展示 任务名称，
  默认在已完成的任务名称前面打上对勾，
  并且支持该组件的 使用者 自定义 任务名称的 布局结构，
  任务列表数据格式形如：[ { id: 1, name: '吃饭', done: false }, { id: 2, name: '写作业', done: true }, ... ] 
-->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <task-list :list="list">
        <template #default="{ task }">
          <b v-if="task.done">{{ task.name }}</b>
          <span v-else>{{ task.name }}</span>
          <span v-if="task.done" style="color: red">对勾</span>
        </template>
      </task-list>

      <task-list :list="list2"></task-list>
    </div>

    <template id="task-list">
      <ul>
        <li v-for="v in list" :key="v.id">
          <slot :task="v">
            <span v-if="v.done">√</span>
            {{ v.name }}
          </slot>
        </li>
      </ul>
    </template>

    <script src="../vue.js"></script>
    <script>
      Vue.component('task-list', {
        template: '#task-list',
        props: {
          list: {
            type: Array,
            // 必填
            required: true,
          },
        },
      });

      new Vue({
        el: '#app',
        data: {
          list: [
            { id: 1, name: '吃饭', done: false },
            { id: 2, name: '写作业', done: true },
            { id: 3, name: '吃包子', done: true },
            { id: 4, name: '打游戏', done: false },
            { id: 5, name: '看小说', done: true },
          ],
          list2: [
            { id: 1, name: '起床', done: false },
            { id: 2, name: '刷牙', done: true },
            { id: 3, name: '洗脸', done: true },
            { id: 4, name: 'WC', done: false },
          ],
        },
      });
    </script>
  </body>
</html>
